In the last two decades computers have developed into sophisticated machines having powerful processors and large amounts of memory and local data storage. A modern computer has installed thereto a large operating system, which today includes not only low-level functions for accessing input, output and storage devices, but additionally libraries providing common functions to applications, graphical windowing systems, and applications to perform administrative functions, data access functions, and even multimedia and entertainment functions. The common practice of using applications requires the installation of an application's executable, configuration and data files to local storage, although some applications and systems extend this to use of network drives as well. Today's computers also multitask, and permit more than one application to be installed and executed thereon concurrently. This sophistication in the operating system in combination with the large number of potential applications from diverse sources has made the administration of a typical modern computer more difficult.
With the advent of graphical operating systems, users were offered a way to visually interact with a computer. This visual interaction made possible a new hierarchical organization to the computer presentation, typically including a top-level presentation, for example a ‘desktop’ with a top level ‘start’ menu, and further including sub-presentations such as application windows. Executing applications under that mode may be performed by acting on icons and menu items, relieving the user from the burden of having to know the logical location of items in a filesystem to use them. These icons, shortcuts, links and menu items all point to an executable or other object at their true reference points. If the reference object is moved to a different location in the filesystem hierarchy, the link to the object becomes broken and non-functional; in some operating systems the system may attempt to resolve the new location of the object and fix the link.
In personal computers of the early to mid-1980s, applications and data were typically stored to a floppy disk, with little to no other non-volatile storage available to programs. Those disks could be transported between computers of the same type, thereby making those applications portable. The execution of those applications, however, was from the command line, which required some user expertise. A user, for example, might need to know that an application's executable was located on drive ‘0’ or ‘a:’. Should an application disk be inserted to a second drive, the application might be required to be reconfigured to reference data and configuration objects on that second drive. The computer and operating system makers of the time largely left the problem of application mobility (moving an application to a different drive or location) unaddressed, which required users to maintain many applications in static locations even though stored to floppy disks.
Other types of portable storage have been used in the past. One early example was a cartridge including a read-only memory and a card-like interface mating to a socket, for example in a game console. Those cartridges contained no file-system, but rather were presented as instructions and data at particular addressible memory locations. In addition to floppy disks, mentioned above, high density magnetic media cartridges have been used, for example “Zip” disks. The improvement therein related mainly to the amount of data that could be stored on the portable media. Other examples include optical and magneto-optical disks, some of which are commonly known as CDs and DVDs. The advent of these permitted the cheap distribution of software and data, supplanting the use of floppy diskettes and permitting the growth of software applications to many megabytes. Those software makers have taken advantage of the increasingly large amounts of local hard drive storage for applications, and have largely not attempted installations other than to a local hard drive. Today, nearly all software packages perform an installation step in which the application's files are installed to a local hard drive of a computer.
Presently, the most convenient uses of applications require installation of an application to a local hard drive or use of applications stored on portable media in a known or determinable position in the filesystem hierarchy of the computer. In the latter use, the application might be used on more than one computer, provided that the user has sufficient expertise to configure the application and operating system with any necessary icons, drivers, and directory locations.
Additionally, prior computing systems have been susceptible to application conflicts with the host operating system (OS) and other applications. When an application is installed to an OS, a number of globally accessible files are often placed to the computing system, including for example shared libraries and system configuration. Those shared libraries are often provided in different versions, with applications requiring one version or another. A mismatch between a library version and a version required by an application sometimes results in that application crashing, becoming inoperable, or exhibiting other errors. Shared configuration elements are sometimes globally available to applications, which may write a favored configuration thereto. Following a write to that configuration other applications may be unable to read the configuration properly, or may be unable to function under a new specified configuration. Thus it is that following the installation of an application to a computer, other applications may stop working.
Installing a number of applications to a computer can be something of a black art. An administrator may, with good intentions and understanding, install several applications to a computer. Upon testing an installation or during use, the administrator or a user may discover that one or more applications operate errantly or not at all. It is sometimes not apparent which applications are in conflict. The administrator may enter a procedure in which applications are uninstalled from the computer in a process of elimination to find the offending applications. Sometimes de-installation programs do not remove all installed files, in which that procedure may fail to locate the problem. The administrator is then required to continue by creating a clean (or “virgin”) installation, and installing applications one at a time until the problem is located.
When applications are found to conflict, a choice must usually be made as to which one will be installed. One of the applications is sometimes installed to a different computer to avoid the conflict. If conflicting applications must be installed to a single computer, a new version of at least one of the applications must be sought and purchased from the software vendors. A non-conflicting version may not be available, especially if a vendor is small, not supporting the application, or no longer in business.
Snapshot utilities are available, which generally operate to create a database of all files and registry settings on a computer. Prior to installing an application, a snapshot is taken of the files and registry settings. The application is then installed, and tested. If the application fails to work satisfactorily, the system can be restored by comparing the existing files and registry settings against the snapshot and removing installed files and otherwise restoring the system as before. Snapshot utilities have several limitations. First, if a newly installed application causes a prior installed application to fail, it is often not possible to simply revert to a snapshot made prior to older application installation, especially if there have been other applications installed in the interim. The administrator may be required to revert back to the earlier snapshot, and then re-install the intervening applications and the new application. Additionally, there are usually a limited number of snapshots that can be stored, and thus a required snapshot may not have been retained when found to be needed.
Likewise, a system may be restored to an earlier state if backups have been made. That restoration process, however, usually involves a significant amount of time and destroys all data recorded to the system after the time of the backup.
A current practice of maintaining computers is to image the hard drive of a computer while in a working state. If the computer becomes unstable, or if undesirable content appears on the computer, the computer's drive is restored using the earlier made image. This practice is lacking in that all changes made following the image creation are wiped off the system when the computer is restored, including user files and other applications.
Also, some applications are not provided with an uninstall program. To de-install those applications an administrator is required to know where the application files and settings reside in the system, and remove them manually.